#include "tensor.h"
// #include "config.h"
// #include "cim144.h"

Tensor Conv2d_op_T(const Tensor& input, const Tensor& weight,
	const std::array<int, 2>& strides = { 1,1 } ,int shift=0, const std::array<int, 4>& padding = { 0,0,0,0 },
	const int& dilation = 1);

Tensor Conv2d_op(const Tensor& input, const Tensor& weight,
	const std::array<int, 2>& strides = { 1,1 }, const std::array<int, 4>& padding = { 0,0,0,0 },
	const int& dilation = 1);

Tensor Relu_ops(const Tensor& input);

Tensor Softmax(const Tensor& input);

Tensor AddBias_op(const Tensor& input, const Tensor& bias);

Tensor MaxPool(const Tensor& input, const std::array<int, 2>& kernel_size = { 2,2 }, const std::array<int, 2>& strides = { 2,2 }, const std::array<int, 4>& padding = {0, 0, 0, 0});

Tensor Connect(const Tensor& input, const Tensor& weight,int shift = 0);

std::vector<std::pair<int, int8_t>> TopK(const Tensor& input, int k);

// Tensor Connect_cim(const Tensor& input, const Tensor& weight);

// Tensor Connect_cim(const Tensor& input, const Tensor& weight,const RoCCConfig& rc);